﻿/*
Author : Dzu
-các kiểu validate : required -> không được để trống ô nhập
number  -> chỉ được nhập số
password -> password phải nhập ít nhất 6 kí tự
passwordConfirm -> xác nhận password
email -> định dạng email
date -> ngày phải nhập kiểu dd/MM/yyyy
alphabet -> chỉ được nhập chữ                        
- Lưu ý : Cách đặt tên 2 tham số khi dùng 2 UserControl trong một trang
// Khai báo 2 biến này ở ngoài, sau đó truyền dạng tham số
// Vì là biến toàn cục nên không đặt tên trùng 2 biến ở các UserControl, ví dụ 
/////// TRƯỜNG HỢP ĐÚNG
// UserControl A : var array = [{...}] ; var message...
// UserControl B : var fields = [{...}] ; var message_2....
////// TRƯỜNG HỢP SAI
// UserControl A : var array = [{...}] ; var message...
// UserControl B : var array = [{...}] ; var message...
*/
function Validation(fields, message) {
    //chuỗi regex validate
    var ruleRegex = /^(.+)\[(.+)\]$/,
    //requiredRegex = /^[A-Za-z0-9 ]{1,20}$/,
                passwordLengthRegex = /^[A-Za-z0-9!@#$%^&*()_]{6,20}$/,
                numericRegex = /^[0-9]+$/,
                integerRegex = /^\-?[0-9]+$/,
                decimalRegex = /^\-?[0-9]*\.?[0-9]+$/,
                emailRegex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$/i,
                alphaRegex = /^[a-z]+$/i,
                alphaNumericRegex = /^[a-z0-9]+$/i,
                naturalRegex = /^[0-9]+$/i,
                naturalNoZeroRegex = /^[1-9][0-9]*$/i,
                dateRegex = /^\d{1,2}\/\d{1,2}\/\d{4}$/;

    this.errors = []; // danh sach loi
    for (var i = 0, fieldLength = fields.length; i < fieldLength; i++) {
        var field = fields[i];
        var controlValue = document.getElementById(field.id.toLocaleString()).value;
        for (var j = 0, mLength = field.rules.length; j < mLength; j++) {
            switch (field.rules[j].toLocaleString()) {
                case "required": // không được để trống
                    if (controlValue == '' || controlValue.length == 0) {
                        errors[errors.length] = field.display.toLocaleString() + " không được để trống";
                    }
                    break;
                case "email": // định dạng email
                    if (!emailRegex.test(controlValue)) {
                        errors[errors.length] = field.display.toLocaleString() + " sai định dạng";
                    }
                    break;
                case "number": // định dạng kiểu số
                    if (controlValue.length > 0) {
                        if (!numericRegex.test(controlValue)) {
                            errors[errors.length] = field.display.toLocaleString() + " chỉ được nhập số";
                        }
                    }
                    break;
                case "password": // độ dài password
                    if (!passwordLengthRegex.test(controlValue)) {
                        errors[errors.length] = field.display.toLocaleString() + " phải có ít nhất 6 kí tự";
                    }
                    break;
                case "date": //định dạng ngày tháng
                    if (!dateRegex.test(controlValue)) {
                        errors[errors.length] = field.display.toLocaleString() + " sai định dạng ngày tháng (dd/MM/yyyy)";
                    }
                    break;
                case "alphabet": // chỉ cho phép nhập chữ
                    if (!alphaRegex.test(controlValue)) {
                        errors[errors.length] = field.display.toLocaleString() + " chỉ được nhập chữ";
                    }
                    break;
                case "passwordConfirm": // chỉ cho phép nhập chữ
                    var passwordValue = document.getElementById(field.idPassword.toLocaleString()).value;
                    if (passwordValue != controlValue) {
                        errors[errors.length] = field.display.toLocaleString() + " không khớp";
                    }
                    break;
                default:
                    break;
            }  // end switch
        } // end for Rules
    } //end for Fields
    var messageControl = document.getElementById(message.toLocaleString());
    if (errors.length > 0) {        
        messageControl.innerHTML = danhSachLoi(errors);
        return false;
    }
    return true;
}
function danhSachLoi(errors) {
    var msg = "<div style='color:Red;font-style:italic;font-weight:normal;'>Danh sách lỗi...<br />";
    for (var i = 0; i < errors.length; i++) {
        var numError = i + 1;
        msg += numError + ". " + errors[i] + "<br />";
    }
    return msg + "</div>";
}





function Validation1(fields, message) {
    //chuỗi regex validate
    var ruleRegex = /^(.+)\[(.+)\]$/,
    //requiredRegex = /^[A-Za-z0-9 ]{1,20}$/,
                passwordLengthRegex = /^[A-Za-z0-9!@#$%^&*()_]{6,20}$/,
                numericRegex = /^[0-9]+$/,
                integerRegex = /^\-?[0-9]+$/,
                decimalRegex = /^\-?[0-9]*\.?[0-9]+$/,
                emailRegex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$/i,
                alphaRegex = /^[a-z]+$/i,
                alphaNumericRegex = /^[a-z0-9]+$/i,
                naturalRegex = /^[0-9]+$/i,
                naturalNoZeroRegex = /^[1-9][0-9]*$/i,
                dateRegex = /^\d{1,2}\/\d{1,2}\/\d{4}$/;

    this.errors = []; // danh sach loi
    for (var i = 0, fieldLength = fields.length; i < fieldLength; i++) {
        var field = fields[i];
        var controlValue = document.getElementById(field.id.toLocaleString()).value;
        for (var j = 0, mLength = field.rules.length; j < mLength; j++) {
            switch (field.rules[j].toLocaleString()) {
                case "required": // không được để trống
                    if (controlValue == '' || controlValue.length == 0 || field.display.toLocaleString() == controlValue) {
                        errors[errors.length] = field.display.toLocaleString() + " không được để trống";
                    }
                    break;
                default:
                    break;
            }  // end switch
        } // end for Rules
    } //end for Fields
    var messageControl = document.getElementById(message.toLocaleString());
    if (errors.length > 0) {
        messageControl.innerHTML = danhSachLoi1(errors);
        return false;
    }
    return true;
}
function danhSachLoi1(errors) {
    var msg = "";
    for (var i = 0; i < errors.length; i++) {
        msg += errors[i];
    }
    return msg;
}

